//package com.yamaikeji.plan.controller;
//
//import com.microsoft.cognitiveservices.speech.*;
//
//import java.util.concurrent.ExecutionException;
//
//public class SpeechSynthesis {
//    // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
//    private static String speechKey = "CmdpjcxYyxwr1OqxFilmX1y9YHCX6ToKesFUJUe2yXHLVJUuZuQTJQQJ99BCAC1i4TkXJ3w3AAAYACOGSRfA";
//    private static String speechRegion = "centralus";
//
//    public static void main(String[] args) throws InterruptedException, ExecutionException {
//
//        SpeechConfig speechConfig = SpeechConfig.fromSubscription(speechKey, speechRegion);
//
//        // Required for WordBoundary event sentences.
//        speechConfig.setProperty(PropertyId.SpeechServiceResponse_RequestSentenceBoundary, "true");
//        speechConfig.setProperty(PropertyId.SpeechServiceResponse_StablePartialResultThreshold, "5");
//
//        String speechSynthesisVoiceName = "en-US-AvaMultilingualNeural";
//
//        String ssml = String.format("<speak version='1.0' xml:lang='en-US' xmlns='http://www.w3.org/2001/10/synthesis' xmlns:mstts='http://www.w3.org/2001/mstts'>"
//                .concat(String.format("<voice name='%s'>", speechSynthesisVoiceName))
//                .concat("<bookmark mark='colors_list_begin'/>The rainbow has seven colors: Red, orange, yellow, green, blue, indigo, and violet<bookmark mark='colors_list_end'/>.")
//                .concat("</voice>")
//                .concat("</speak>"));
//
//        SpeechSynthesizer speechSynthesizer = new SpeechSynthesizer(speechConfig);
//        {
//            // Subscribe to events
//
//            speechSynthesizer.BookmarkReached.addEventListener((o, e) -> {
//                System.out.println("BookmarkReached event:");
//                System.out.println("\tAudioOffset: " + ((e.getAudioOffset() + 5000) / 10000) + "ms");
//                System.out.println("\tText: " + e.getText());
//            });
//
//            // Synthesize the SSML
//            System.out.println("SSML to synthesize:");
//            System.out.println(ssml);
//            SpeechSynthesisResult speechSynthesisResult = speechSynthesizer.SpeakSsmlAsync(ssml).get();
//
//            if (speechSynthesisResult.getReason() == ResultReason.SynthesizingAudioCompleted) {
//                System.out.println("SynthesizingAudioCompleted result");
//            }
//            else if (speechSynthesisResult.getReason() == ResultReason.Canceled) {
//                SpeechSynthesisCancellationDetails cancellation = SpeechSynthesisCancellationDetails.fromResult(speechSynthesisResult);
//                System.out.println("CANCELED: Reason=" + cancellation.getReason());
//
//                if (cancellation.getReason() == CancellationReason.Error) {
//                    System.out.println("CANCELED: ErrorCode=" + cancellation.getErrorCode());
//                    System.out.println("CANCELED: ErrorDetails=" + cancellation.getErrorDetails());
//                    System.out.println("CANCELED: Did you set the speech resource key and region values?");
//                }
//            }
//        }
//        speechSynthesizer.close();
//
//        System.exit(0);
//    }
//}